let arr = [1,2,3,4,5]
/**
 * @description map方法返回一个新数组，数组中的元素为原始数组元素调用函数处理后的值。
 */
const map = (arr,fn)=>{
	let result = []
	for(let value of arr){
		result.push(fn(value))
	}
	return result
}
// let r = map(arr,(v)=>v*v)
// console.log(r); // [ 1, 4, 9, 16, 25 ]


/**
 * @description filter方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素
 */
const filter = (arr,fn)=>{
	let result = [];
	for(let value of arr){
		if(fn(value)){
			result.push(value)
		}
	}
	return result
}
// let r = filter(arr,v=>v%2===0)
// console.log(r); //[ 2, 4 ]



/**
 * @description  every 方法用于检测数组所有元素是否都符合指定条件
 */
const every = (arr,fn)=>{
	let result = true
	for(let value of arr){
		result = fn(value)
		if(!result){
			break;
		}
	}
	return result 
}
// let r = every(arr,v=>v>0)
// console.log(r);  // true


/**
 * @description some方法检测数组中的元素是否满足指定条件
 * 如果有一个元素满足条件，则表达式返回true ，剩余的元素不会再执行检测
 * 如果没有满足条件的元素，则返回false。
 * 
 */
const some = (arr,fn)=>{
	let result =false
	for(let value of arr){
		result = fn(value)
		if(result){
			break;
		}
	}
	return result
}
let r = some(arr,v=>v==0)
console.log(r); // false